package com.ocom.accesservice.service;

import com.ocom.common.dto.MachineListDto;
import com.ocom.common.entity.access.EntityMjDeviceInfo;
import com.ocom.common.request.srvpaccess.FindMachVo;
import com.ocom.common.vo.*;
import com.ocom.common.vo.access.MjDeviceInfoExxVo;
import icu.mhb.mybatisplus.plugln.base.service.JoinIService;

import java.util.List;

public interface DeviceInfoService extends JoinIService<EntityMjDeviceInfo> {

    //b)从门禁设备表mj_device_info查出所有area_id=areaNo的记录
    public List<MachineListDto> getDeviceInfo(Long areaId,Long comId);

    public List<EntityMjDeviceInfo> getDeviceInfo(Long  comId, List<Long> areaId, Long commMode);

    //4.根据区域id获取设备数量
    public Integer CountMachineNumber(Long areaId, Long comId);

    EntityMjDeviceInfo GetDeviceByDeviceNo(String deviceNo, Long comId);

    /**
     *  web 按出厂号登记设备（bindMachVo）
     *
     * @return*/
    public Integer BindMach(BindMachVo bindMachVo, Long comId);



    /**
     * 校验设备信息是否存在
     *
     * @param companyID 公司编号
     * @param areaNo 区域编号
     * @return 结果
     */
    public String checkDeviceInfoUnique(Long companyID,Long areaNo);


    /**
     * 查询设备列表（searchMachList）
     *
     * @return*/
    public List<MjDeviceInfoExxVo> SearchMachList(SearchMachListVo searchMachListVo, Long comId);


    /**
     *  修改设备（updateMach）
     *
     * @return*/
    public Integer UpdateMach(UpdateMachVo updateMachVo, Long comId);


    /**
     *  修改安装位置（changeMachPlace）
     * */
    public Integer ChangeMachPlace(ChangeMachPlaceVo changeMachPlaceVo, Long comId);

    /**
     * removeMach
     * */
    public void RemoveMach(Long comId,String deviceNo);

    /**
     *删除总库mj_device_List对应记录
     * */
    public void DeleteMach(Long comId, String machNo);


    /**
     * 查找设备列表（findMach）
     *
     * @return*/
    public List<EntityMjDeviceInfo> FindMach(Long comId, FindMachVo findMachVo);

    public List<EntityMjDeviceInfo> FindMach2(Long comId, FindMachVo findMachVo);

    /**
     *  web 按出厂号批量登记设备（bindMachVo）
     *
     * @return*/
    public boolean WebImportMach(List<ImportMachVo> importMachVos, Long comId);

    // 重置门禁下传状态 (/mach/reset)
    public void MachReset(Long comId, String machNo);

    /**
     *修改门禁告警状态
     * */
    public void updateMachByAlarm(Long comId, Integer alarmState, List<String> deviceNos);


    public void deleteSession(Long companyId);
}
